package com.sudo.boot.service.sys;

import cn.hutool.core.lang.tree.Tree;
import com.mybatisflex.core.service.IService;
import com.sudo.boot.mapper.sys.entity.SysMenu;
import com.sudo.boot.mapper.sys.model.bo.SysMenuBoAdd;
import com.sudo.boot.mapper.sys.model.bo.SysMenuBoAddSub;
import com.sudo.boot.mapper.sys.model.bo.SysMenuBoEdit;
import com.sudo.boot.mapper.sys.model.bo.SysMenuBoStatus;
import com.sudo.boot.mapper.sys.model.vo.SysMenuDetailVo;
import com.sudo.boot.mapper.sys.model.vo.SysMenuVo;
import com.sudo.boot.service.common.BaseService;

import java.util.List;

/**
 * 系统菜单  服务层。
 *
 * @author admins
 * @since 2023-10-13
 */
public interface SysMenuService extends IService<SysMenu>, BaseService {


    List<SysMenuVo> selectAllSysMenuList(List<String> menuTypeList);

    List<Tree<String>> selectAllSysMenuTree();

    List<Tree<String>> selectAllForLayMenuTree();

    List<SysMenuVo> selectMenuListByRoleCode(String roleCode, List<String> menuTypeList);

    List<Tree<String>> selectMenuTreeByRoleCode(String roleCode);


    List<Tree<String>> selectSimulateMenuTreeByRoleCode(String roleCode);

    List<Integer> selectMenuIdListByRoleId(Integer roleId);

    void checkMenuAuth(String currRoleCode, String menuCode);

    List<SysMenuVo> selectMenuListByRoleCode(String menuCode);

    void deleteById(Integer id);

    void add(SysMenuBoAdd bo);

    void addSub(SysMenuBoAddSub bo);

    void edit(SysMenuBoEdit bo);

    SysMenuDetailVo detail(Long id);

    void status(SysMenuBoStatus bo);

    List<String> getRoleButtonList(String roleCode);
}
